package modelo.configuraciones;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

import modelo.configuraciones.FuenteDeCiudadesYObjetos;
import modelo.configuraciones.LectorCiudadesYObjetosXML;
import modelo.geografia.Ciudad;
import modelo.objeto.Comun;
import modelo.objeto.Valioso;
import modelo.objeto.MuyValioso;
import modelo.objeto.ObjetoRobado;
import modelo.policia.grado.Grado;

import java.util.Collections;

import org.dom4j.DocumentException;


public class ConfiguracionCiudadesYObjetosXML implements ConfiguracionCiudadesYObjetos {
	
	private List<Ciudad> ciudades;
	private List<ObjetoRobado> objetos;
	private FuenteDeCiudadesYObjetos lectorDeCiudadesYObjetos = LectorCiudadesYObjetosXML.obtenerInstancia();
	
	public ConfiguracionCiudadesYObjetosXML(File archivo) throws DocumentException{		
		ciudades = new ArrayList<Ciudad>();
		objetos = new ArrayList<ObjetoRobado>();
		lectorDeCiudadesYObjetos.obtenerCiudadesYObjetos(archivo, objetos, ciudades);
	}
	public List<Ciudad> obtenerCiudades() {
		return ciudades;
	}
	public ObjetoRobado obtenerObjetoARobar(Grado gradoDePolicia) {
		String grado = gradoDePolicia.devolverGrado();
		ObjetoRobado objeto = null;
		boolean objetoDelTipoBuscadoEncontrado = false;
		while (objetoDelTipoBuscadoEncontrado == false){
			Collections.shuffle(objetos);
			objeto = objetos.get(0);
			//Utilizo RTTI
			if (grado.equals("Novato") || grado.equals("Detective")){
				if (objeto.getClass() == Comun.class) objetoDelTipoBuscadoEncontrado = true;
			};
			if (grado.equals("Investigador")) {
				if (objeto.getClass() == Valioso.class) objetoDelTipoBuscadoEncontrado = true;
			};
			if (grado.equals("Sargento")) {
				if (objeto.getClass() == MuyValioso.class) objetoDelTipoBuscadoEncontrado = true;
			};
		}
		return objeto;
	}
}
